home *** CD-ROM | disk | FTP | other *** search
- #define BUFF_SIZE sizeof(struct LineItem)
-
- WriteItemList(FileName) /*Write the item list to disk*/
- char *FileName;
- {
- struct FileHandle *fp;
- struct LineItem *buffer,*CurItem;
- UBYTE StartDouble;
-
- if((fp=(struct FileHandle *)Open(FileName,MODE_NEWFILE))==NULL)
- {
- TitleError("Can't open file for save!");
- return(FALSE);
- }
-
- buffer=(struct LineItem *)AllocMem(BUFF_SIZE,MEMF_CHIP|MEMF_CLEAR);
-
- strcpy(buffer->Text,"LFDB"); /*ID: Liner Form Data Block*/
- /*Store StaringLevel & DoubleSpc as one byte on disk*/
- StartDouble=StartingLevel+(DoubleSpc*32);
- buffer->Text[4]=StartDouble;
- buffer->Text[5]=0;
- Write(fp,buffer,BUFF_SIZE);
- CurItem=(struct LineItem *)FirstItem;
-
- do
- {
- buffer->Level=CurItem->Level;
- buffer->ItemNumber=CurItem->ItemNumber;
- strcpy(buffer->Text,CurItem->Text);
- Write(fp,buffer,BUFF_SIZE);
- CurItem=(struct LineItem *)CurItem->NextItem;
- }
- while(CurItem != NULL);
-
- FreeMem(buffer,BUFF_SIZE);
- Close(fp);
- return(TRUE);
- }
-
- ReadItemList(FileName) /*Read an item list from disk*/
- char *FileName;
- {
- struct FileHandle *fp;
- struct LineItem *buffer,*CurItem;
- int len;
- char TempIndent;
-
- if((fp=(struct FileHandle *)Open(FileName,MODE_OLDFILE))==NULL)
- {
- TitleError("Can't open file for read!");
- return(FALSE);
- }
-
- FreeListMem(FirstItem,LastItem); /*Get rid of old outline*/
- buffer=(struct LineItem *)AllocMem(BUFF_SIZE,MEMF_CHIP|MEMF_CLEAR);
- Read(fp,buffer,BUFF_SIZE);
- TempIndent=buffer->Text[4];
- buffer->Text[4]=NULL;
- if(strcmp(buffer->Text,"LFDB"))
- {
- close(fp);
- return(FALSE);
- }
- if(TempIndent>=32) /*If double spaced...*/
- {
- DoubleSpc=1;
- MenuItem1.Flags=CHECKIT+ITEMTEXT+COMMSEQ+MENUTOGGLE+
- ITEMENABLED+HIGHCOMP+CHECKED;
- TempIndent-=32; /*Removed double spacing flag*/
- }
- else
- {
- DoubleSpc=0;
- MenuItem1.Flags=CHECKIT+ITEMTEXT+COMMSEQ+MENUTOGGLE+
- ITEMENABLED+HIGHCOMP;
- }
-
- SubItems[StartingLevel]->Flags-=CHECKED;
- StartingLevel=(TempIndent < 6) ? TempIndent : 6;
- SubItems[StartingLevel]->Flags+=CHECKED;
-
- CurItem=FirstItem=FirstScrnItem=(struct LineItem *)InsertItem(NULL,NULL);
-
- len=Read(fp,buffer,BUFF_SIZE);
-
- while(len > 0)
- {
- CurItem->ItemNumber=buffer->ItemNumber;
- CurItem->Level=buffer->Level;
- strcpy(CurItem->Text,buffer->Text);
- len=Read(fp,buffer,BUFF_SIZE);
- CurItem=(struct LineItem *)InsertItem(NULL,CurItem);
- }
-
- LastItem=(struct LineItem *)CurItem->PrevItem;
- LastItem->NextItem=NULL;
- FreeMem(CurItem,sizeof(struct LineItem));
- FreeMem(buffer,BUFF_SIZE);
- Close(fp);
-
- PrintItemList(FirstItem,1);
- CurrentItem=(struct LineItem *)FirstItem;
- PlotCursor(MinX(CurrentItem),1);
- return(TRUE);
- }
-
-